/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.com.spadons.esmetil.entities;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlTransient;

/**
 *
 * @author spadons
 */
@Entity
@Table(name = "unidad")
@NamedQueries({
    @NamedQuery(name = "Unidad.findAll", query = "SELECT u FROM Unidad u"),
    @NamedQuery(name = "Unidad.findByCodigo", query = "SELECT u FROM Unidad u WHERE u.codigo = :codigo"),
    @NamedQuery(name = "Unidad.findByDescripcion", query = "SELECT u FROM Unidad u WHERE u.descripcion = :descripcion"),
    @NamedQuery(name = "Unidad.findBySimbolo", query = "SELECT u FROM Unidad u WHERE u.simbolo = :simbolo")})
public class Unidad implements Serializable {
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "unidad")
    private List<UsuarioUnidad> usuarioUnidadList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "unidadDestino")
    private List<UnidadUnidad> unidadUnidadList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "unidadDesde")
    private List<UnidadUnidad> unidadUnidadList1;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "unidad")
    private List<MagnitudUnidad> magnitudUnidadList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "unidad")
    private List<Dato> datosList;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "codigo")
    private Integer codigo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 60)
    @Column(name = "descripcion")
    private String descripcion;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 5)
    @Column(name = "simbolo")
    private String simbolo;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "unidadMedida")
    private List<EstacionDetalle> estacionDetalleList;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "unidadDefecto")
    private List<ModeloSensor> modeloSensorList;

    public Unidad() {
    }

    public Unidad(Integer codigo) {
        this.codigo = codigo;
    }

    public Unidad(Integer codigo, String descripcion, String simbolo) {
        this.codigo = codigo;
        this.descripcion = descripcion;
        this.simbolo = simbolo;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public String getSimbolo() {
        return simbolo;
    }

    public void setSimbolo(String simbolo) {
        this.simbolo = simbolo;
    }

    public List<EstacionDetalle> getEstacionDetalleList() {
        return estacionDetalleList;
    }

    public void setEstacionDetalleList(List<EstacionDetalle> estacionDetalleList) {
        this.estacionDetalleList = estacionDetalleList;
    }

    public List<ModeloSensor> getModeloSensorList() {
        return modeloSensorList;
    }

    public void setModeloSensorList(List<ModeloSensor> modeloSensorList) {
        this.modeloSensorList = modeloSensorList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigo != null ? codigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Unidad)) {
            return false;
        }
        Unidad other = (Unidad) object;
        if ((this.codigo == null && other.codigo != null) || (this.codigo != null && !this.codigo.equals(other.codigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "py.com.spadons.esmetil.entities.Unidad[ codigo=" + codigo + " ]";
    }

    @XmlTransient
    public List<UsuarioUnidad> getUsuarioUnidadList() {
        return usuarioUnidadList;
    }

    public void setUsuarioUnidadList(List<UsuarioUnidad> usuarioUnidadList) {
        this.usuarioUnidadList = usuarioUnidadList;
    }

    @XmlTransient
    public List<UnidadUnidad> getUnidadUnidadList() {
        return unidadUnidadList;
    }

    public void setUnidadUnidadList(List<UnidadUnidad> unidadUnidadList) {
        this.unidadUnidadList = unidadUnidadList;
    }

    @XmlTransient
    public List<UnidadUnidad> getUnidadUnidadList1() {
        return unidadUnidadList1;
    }

    public void setUnidadUnidadList1(List<UnidadUnidad> unidadUnidadList1) {
        this.unidadUnidadList1 = unidadUnidadList1;
    }

    @XmlTransient
    public List<MagnitudUnidad> getMagnitudUnidadList() {
        return magnitudUnidadList;
    }

    public void setMagnitudUnidadList(List<MagnitudUnidad> magnitudUnidadList) {
        this.magnitudUnidadList = magnitudUnidadList;
    }

    @XmlTransient
    public List<Dato> getDatosList() {
        return datosList;
    }

    public void setDatosList(List<Dato> datosList) {
        this.datosList = datosList;
    }
    
}
